/* Funzione che amplia un'area */

/*
| ?- S=9,AC=28,api(API),trx(Trx),lmax(Lmax),deltaL(DeltaL),area(AC,[_,_,ACd]),ar
ea(AC,[ACx,ACy,ACd]),ACd+DeltaL<Lmax, NAx is -(ACx,/(DeltaL,2)),NAy is -(ACy,/(D
eltaL,2)),NAd is ACd+DeltaL,NA1=29,sitiInteresseIn(AC,SitiAC),sitiInteresseIn(NA
1,SitiNA1),NA=NA1,not(intersezione(NA1,API)),Tx=5,Tx<Trx,ampliaArea(NA1,NA)--24.




*/

ampliaArea(AC,NA):-
	api(API),
	trx(Trx),
	lmax(Lmax),
	deltaL(DeltaL),
	area(AC,[_,_,ACd]),
	(ACd+DeltaL<Lmax->   % controlla che l'area non eccede la lunghezza massima
		( nuovaArea(AC,NA1), %
		  ( not(intersezione(NA1,API))->
			( calcolaTx(NA1,Tx),
			  retractall(tx(NA1,_)),
			  assert(tx(NA1,Tx)),	
			  (Tx<Trx->
				(ampliaArea(NA1,NA),rimuoviArea(AC))
				;
				(NA=AC,rimuoviArea(NA1))
			  )
			)
			;
			(NA=AC,rimuoviArea(NA1))
		  )
		)
		;
		(NA=AC)
	).
